﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Intelsi.Entity;


namespace Intelsi.DataAcces
{
   public  class ProductoDAO:MasterDataAccess,IProductoDAO
    {
        public List<Producto> GtFromProductoByDescripcion(string descripcion)
        {
            var query = from p in Context.Productoes
                        select p;

            if (descripcion != null)
            {
                query = query.Where(c=>c.Nombre.ToUpper().Contains(descripcion.ToUpper())||
                                       c.Nombre.ToUpper().StartsWith(descripcion.ToUpper()));
            
            }

            return query.ToList();

        }


        public void RegistarProducto(Producto producto)
        {
           // Int32 nuevo //= producto.IdProducto = 0;

            if (producto.IdProducto == 0)
            {
                producto.Nombre = producto.Nombre;
                producto.Codigo = producto.Codigo;
                producto.IdMarca = producto.IdMarca;
                producto.UniMedida = producto.UniMedida;
                producto.Estado = producto.Estado;
                producto.IdCategoria = producto.IdCategoria;
                producto.Stock = producto.Stock;
                producto.StockMin = producto.StockMin;
                producto.Modelo = producto.Modelo;
                producto.Voltaje = producto.Voltaje;
                producto.Talla = producto.Talla;
                producto.Color = producto.Color;
                producto.FechaVencimiento = producto.FechaVencimiento;
                producto.PrecioCompra = producto.PrecioCompra;
                producto.IdProveedor = producto.IdProveedor;

            }

            Context.Productoes.Add(producto);
            Context.SaveChanges();
        }

        public void EditarProducto(Producto producto)
        {
            var existe = (from p in Context.Productoes
                          where p.IdProducto.Equals(producto.IdProducto)
                          select p).SingleOrDefault();



            if (existe != null)
            {
                existe.Nombre = producto.Nombre;
                existe.Codigo = producto.Codigo;
                existe.IdMarca = producto.IdMarca;
                existe.UniMedida = producto.UniMedida;
                existe.Estado = producto.Estado;
                existe.IdCategoria = producto.IdCategoria;
                existe.Stock = producto.Stock;
                existe.StockMin = producto.StockMin;
                existe.Modelo = producto.Modelo;
                existe.Voltaje = producto.Voltaje;
                existe.Talla = producto.Talla;
                existe.Color = producto.Color;
                existe.FechaVencimiento = producto.FechaVencimiento;
                existe.PrecioCompra = producto.PrecioCompra;
                existe.IdProveedor = producto.IdProveedor;
                existe.Foto = producto.Foto;

            }

            Context.Entry(existe).State = System.Data.EntityState.Modified;
            Context.SaveChanges();

        }

        public Producto GetFromProductoByIdProducto(int IdProducto)
        {
           return Context.Productoes.Find(IdProducto);
        }

        public byte[] GetFotoProductoByIdProducto(int idproducto)
        {
            var query = from pr in Context.Productoes
                        where pr.IdProducto.Equals(idproducto)
                        select pr.Foto;

            return query.SingleOrDefault();

                       
        }

        public List<Producto> GetAllFromProducto()
        {
            var query = from p in Context.Productoes
                        orderby p.IdProducto
                        select p;

            return query.ToList();
        }
    }
}
